<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang>
<head>
  <meta http-equiv='X-UA-Compatible' content='IE=edge' />
  <meta http-equiv='MSThemeCompatible' content='Yes'>

  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <title>CDEC Class</title>
  <style type="text/css">
      code{white-space: pre-wrap;}
      span.smallcaps{font-variant: small-caps;}
      span.underline{text-decoration: underline;}
      div.column{display: inline-block; vertical-align: top; width: 50%;}
  </style>
  <style type="text/css">@font-face {font-family: octicons-link;src: url(data:font/woff;charset=utf-8;base64,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) format('woff');}body {-webkit-text-size-adjust: 100%;text-size-adjust: 100%;color: #333;font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size: 16px;line-height: 1.6;word-wrap: break-word;max-width: 99%;box-sizing: border-box;padding: 20px 5px 8rem 5px; margin-left: auto;margin-right: auto;}body a {background-color: transparent;}body a:active,body a:hover {outline: 0;}body strong {font-weight: bold;}body h1 {font-size: 2em;margin: 0.67em 0;}body img {border: 0;}body hr {box-sizing: content-box;height: 0;}body pre {overflow: auto;}body code,body kbd,body pre {font-family: monospace, monospace;font-size: 1em;}body input {color: inherit;font: inherit;margin: 0;}body html input[disabled] {cursor: default;}body input {line-height: normal;}body input[type="checkbox"] {box-sizing: border-box;padding: 0;}body table {border-collapse: collapse;border-spacing: 0;}body td,body th {padding: 0;}body * {box-sizing: border-box;}body input {font: 13px / 1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";}body a {color: #4078c0;text-decoration: none;}body a:hover,body a:active {text-decoration: underline;}body hr {height: 0;margin: 15px 0;overflow: hidden;background: transparent;border: 0;border-bottom: 1px solid #ddd;}body hr:before {display: table;content: "";}body hr:after {display: table;clear: both;content: "";}body h1,body h2,body h3,body h4,body h5,body h6 {margin-top: 15px;margin-bottom: 15px;line-height: 1.1;}body h1 {font-size: 30px;}body h2 {font-size: 21px;}body h3 {font-size: 16px;}body h4 {font-size: 14px;}body h5 {font-size: 12px;}body h6 {font-size: 11px;}body blockquote {margin: 0;}body ul,body ol {padding: 0;margin-top: 0;margin-bottom: 0;}body ol ol,body ul ol {list-style-type: lower-roman;}body ul ul ol,body ul ol ol,body ol ul ol,body ol ol ol {list-style-type: lower-alpha;}body dd {margin-left: 0;}body code {font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size: 12px;}body pre {margin-top: 0;margin-bottom: 0;font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;}body .select::-ms-expand {opacity: 0;}body .octicon {font: normal normal normal 16px/1 octicons-link;display: inline-block;text-decoration: none;text-rendering: auto;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;}body .octicon-link:before {content: '\f05c';}body:before {display: table;content: "";}body:after {display: table;clear: both;content: "";}body>*:first-child {margin-top: 0 !important;}body>*:last-child {margin-bottom: 0 !important;}body a:not([href]) {color: inherit;text-decoration: none;}body .anchor {display: inline-block;padding-right: 2px;margin-left: -18px;}body .anchor:focus {outline: none;}body h1,body h2,body h3,body h4,body h5,body h6 {margin-top: 1em;margin-bottom: 16px;font-weight: bold;line-height: 1.4;}body h1 .octicon-link,body h2 .octicon-link,body h3 .octicon-link,body h4 .octicon-link,body h5 .octicon-link,body h6 .octicon-link {color: #000;vertical-align: middle;visibility: hidden;}body h1:hover .anchor,body h2:hover .anchor,body h3:hover .anchor,body h4:hover .anchor,body h5:hover .anchor,body h6:hover .anchor {text-decoration: none;}body h1:hover .anchor .octicon-link,body h2:hover .anchor .octicon-link,body h3:hover .anchor .octicon-link,body h4:hover .anchor .octicon-link,body h5:hover .anchor .octicon-link,body h6:hover .anchor .octicon-link {visibility: visible;}body h1 {padding-bottom: 0.3em;font-size: 1.75em;line-height: 1.2;}body h1 .anchor {line-height: 1;}body h2 {padding-bottom: 0.3em;font-size: 1.5em;line-height: 1.225;}body h2 .anchor {line-height: 1;}body h3 {font-size: 1.25em;line-height: 1.43;}body h3 .anchor {line-height: 1.2;}body h4 {font-size: 1em;}body h4 .anchor {line-height: 1.2;}body h5 {font-size: 1em;}body h5 .anchor {line-height: 1.1;}body h6 {font-size: 1em;color: #777;}body h6 .anchor {line-height: 1.1;}body p,body blockquote,body ul,body ol,body dl,body table,body pre {margin-top: 0;margin-bottom: 16px;}body hr {height: 4px;padding: 0;margin: 16px 0;background-color: #e7e7e7;border: 0 none;}body ul,body ol {padding-left: 2em;}body ul ul,body ul ol,body ol ol,body ol ul {margin-top: 0;margin-bottom: 0;}body li>p {margin-top: 16px;}body dl {padding: 0;}body dl dt {padding: 0;margin-top: 16px;font-size: 1em;font-style: italic;font-weight: bold;}body dl dd {padding: 0 16px;margin-bottom: 16px;}body blockquote {padding: 0 15px;color: #777;border-left: 4px solid #ddd;}body blockquote>:first-child {margin-top: 0;}body blockquote>:last-child {margin-bottom: 0;}body table {display: block;width: 100%;overflow: auto;word-break: normal;word-break: keep-all;}body table th {font-weight: bold;}body table th,body table td {padding: 6px 13px;border: 1px solid #ddd;}body table tr {background-color: #fff;border-top: 1px solid #ccc;}body table tr:nth-child(2n) {background-color: #f8f8f8;}body img {max-width: 100%;box-sizing: content-box;background-color: #fff;}body code {padding: 0;padding-top: 0;padding-bottom: 0;margin: 0;font-size: 85%;background-color: rgba(0,0,0,0.04);border-radius: 3px;}body code:before,body code:after {letter-spacing: -0.2em;content: "\00a0";}body pre>code {padding: 0;margin: 0;font-size: 100%;word-break: normal;white-space: pre;background: transparent;border: 0;}body .highlight {margin-bottom: 16px;}body .highlight pre,body pre {padding: 16px;overflow: auto;font-size: 85%;line-height: 1.45;background-color: #f7f7f7;border-radius: 3px;}body .highlight pre {margin-bottom: 0;word-break: normal;}body pre {word-wrap: normal;}body pre code {display: inline;max-width: initial;padding: 0;margin: 0;overflow: initial;line-height: inherit;word-wrap: normal;background-color: transparent;border: 0;}body pre code:before,body pre code:after {content: normal;}body kbd {display: inline-block;padding: 3px 5px;font-size: 11px;line-height: 10px;color: #555;vertical-align: middle;background-color: #fcfcfc;border: solid 1px #ccc;border-bottom-color: #bbb;border-radius: 3px;box-shadow: inset 0 -1px 0 #bbb;}body .pl-c {color: #969896;}body .pl-c1,body .pl-s .pl-v {color: #0086b3;}body .pl-e,body .pl-en {color: #795da3;}body .pl-s .pl-s1,body .pl-smi {color: #333;}body .pl-ent {color: #63a35c;}body .pl-k {color: #a71d5d;}body .pl-pds,body .pl-s,body .pl-s .pl-pse .pl-s1,body .pl-sr,body .pl-sr .pl-cce,body .pl-sr .pl-sra,body .pl-sr .pl-sre {color: #183691;}body .pl-v {color: #ed6a43;}body .pl-id {color: #b52a1d;}body .pl-ii {background-color: #b52a1d;color: #f8f8f8;}body .pl-sr .pl-cce {color: #63a35c;font-weight: bold;}body .pl-ml {color: #693a17;}body .pl-mh,body .pl-mh .pl-en,body .pl-ms {color: #1d3e81;font-weight: bold;}body .pl-mq {color: #008080;}body .pl-mi {color: #333;font-style: italic;}body .pl-mb {color: #333;font-weight: bold;}body .pl-md {background-color: #ffecec;color: #bd2c00;}body .pl-mi1 {background-color: #eaffea;color: #55a532;}body .pl-mdr {color: #795da3;font-weight: bold;}body .pl-mo {color: #1d3e81;}body kbd {display: inline-block;padding: 3px 5px;font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height: 10px;color: #555;vertical-align: middle;background-color: #fcfcfc;border: solid 1px #ccc;border-bottom-color: #bbb;border-radius: 3px;box-shadow: inset 0 -1px 0 #bbb;}body .task-list-item {list-style-type: none;}body .task-list-item+.task-list-item {margin-top: 3px;}body .task-list-item input {margin: 0 0.35em 0.25em -1.6em;vertical-align: middle;}body :checked+.radio-label {z-index: 1;position: relative;border-color: #4078c0;}</style>
  
    
  
</head>
<body>
<h1 id="cdec-class">CDEC Class</h1>
<p><strong>CDEC</strong> is a wrapper class for the DECIMAL data type. Holds signed 128-bit (16-byte) values representing 96-bit (12-byte) integer numbers scaled by a variable power of 10. The scaling factor specifies the number of digits to the right of the decimal point; it ranges from 0 through 28. With a scale of 0 (no decimal places), the largest possible value is +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9228162514264337593543950335E+28). With 28 decimal places, the largest value is +/-7.9228162514264337593543950335, and the smallest nonzero value is +/-0.0000000000000000000000000001 (+/-1E-28).</p>
<p>In this implementation the scale is dynamic, dictated by the number of decimal places.</p>
<pre><code>DIM dec AS CDEC = 12345.12
print dec   ' = 12345,12
print &quot;scale: &quot;, dec.m_dec.scale  ' --&gt; scale = 2
dec += dec + 11.1111
print dec   ' = 24701,3511
print &quot;new scale: &quot;, dec.m_dec.scale  ' --&gt; scale = 4
</code></pre>
<h3 id="constructors">Constructors</h3>
<p>Creates a new instance of the <strong>CDEC</strong> class and assigns the values passed to it.</p>
<pre><code>CONSTRUCTOR CDec
CONSTRUCTOR CDec (BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYREF cSrc AS CDec, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYREF decSrc AS DECIMAL, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL cySrc AS CURRENCY, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYREF cur AS CCUR, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL bSrc AS BYTE, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL ubSrc AS UBYTE, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL sSrc AS SHORT, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL usSrc AS USHORT, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL lSrc AS LONG, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL ulSrc AS ULONG, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL nInteger AS LONGINT, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL nUInteger AS ULONGINT, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL fSrc AS SINGLE, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL dSrc AS DOUBLE, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYREF wszSrc AS WSTRING, BYVAL lcid AS LCID = 0, BYVAL dwFlags AS ULONG = 0)
CONSTRUCTOR CDec (BYVAL pDispSrc AS IDispatch PTR, BYVAL lcid AS LCID = 0)
CONSTRUCTOR CDec (BYVAL varSrc AS VARIANT, BYVAL lcid AS LCID = 0)
</code></pre>
<h4 id="remarks">Remarks</h4>
<p>As the bigger numeric variable supported by FreeBasic is a long integer, if we want to set bigger values we need to use strings, e.g.</p>
<pre><code>DIM dec AS CDEC = &quot;-79228162514264337593543950.335&quot;
</code></pre>
<p>--or--</p>
<pre><code>DIM dec AS CDEC = &quot;-79,228,162,514,264,337,593,543,950.335&quot;
</code></pre>
<p>By default, the locale user identifier is used. Therefore, in my Spanish computer I need to use &quot;,&quot; as the decimal separator and &quot;.&quot; as the thousands separator.</p>
<pre><code>DIM dec AS CDEC = &quot;-79.228.162.514.264.337.593.543.950,335&quot;
</code></pre>
<p>But it can be overriden by passing an LCID value (1033 for US).</p>
<pre><code>DIM dec AS CDEC = CDEC(&quot;-79,228,162,514,264,337,593,543,950.335&quot;, 1033)
</code></pre>
<h3 id="operators">Operators</h3>
<table>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><a href="#Operator1">Operator LET</a></td>
<td>Assigns a value to a <strong>CDEC</strong> variable.</td>
</tr>
<tr class="even">
<td><a href="#Operator2">CAST operators</a></td>
<td>Converts a <strong>CDEC</strong> into another data type.</td>
</tr>
<tr class="odd">
<td><a href="#Operator3">Operator *</a></td>
<td>Returns the address of the underlying <strong>CURRENCY</strong> structure.</td>
</tr>
<tr class="even">
<td><a href="#Operator4">Comparison operators</a></td>
<td>Compares decimal numbers.</td>
</tr>
<tr class="odd">
<td><a href="#Operator5">Math operators</a></td>
<td>Add, subtract, multiply or divide decimal numbers.</td>
</tr>
</tbody>
</table>
<h3 id="methods">Methods</h3>
<table>
<thead>
<tr class="header">
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><a href="#DecAbs">DecAbs</a></td>
<td>Returns the absolute value of a decimal data type.</td>
</tr>
<tr class="even">
<td><a href="#DecFix">DecFix</a></td>
<td>Returns integer portion of a decimal data type.</td>
</tr>
<tr class="odd">
<td><a href="#DecInt">DecInt</a></td>
<td>Returns integer portion of a decimal data type.</td>
</tr>
<tr class="even">
<td><a href="#DecRound">DecRound</a></td>
<td>Rounds the DECIMAL to a specified number of decimal places.</td>
</tr>
<tr class="odd">
<td><a href="#IsSigned">IsSigned</a></td>
<td>Returns true if this number is signed or false otherwise.</td>
</tr>
<tr class="even">
<td><a href="#IsUnsigned">IsUnsigned</a></td>
<td>Returns true if this number is unsigned or false otherwise.</td>
</tr>
<tr class="odd">
<td><a href="#Scale">Scale</a></td>
<td>Returns the scale of the DECIMAL number.</td>
</tr>
<tr class="even">
<td><a href="#Sign">Sign</a></td>
<td>Returns 0 if it is not signed of &amp;h80 (128) if it is signed.</td>
</tr>
<tr class="odd">
<td><a href="#ToVar">ToVar</a></td>
<td>Returns the currency as a VT_CY variant.</td>
</tr>
</tbody>
</table>
<h1 id="operator-let-(=)"><a name="Operator1"></a>Operator LET (=)</h1>
<p>Assigns a value to a <strong>CDEC</strong> variable.</p>
<pre><code>OPERATOR LET (BYREF cSrc AS CDec)
</code></pre>
<h4 id="examples">Examples</h4>
<pre><code>DIM c AS CDEC
c = 123
c = 12345.1234
</code></pre>
<h1 id="cast-operators"><a name="Operator2"></a>CAST Operators</h1>
<p>Converts a CDEC into another data type.</p>
<pre><code>OPERATOR CAST () AS CURRENCY
OPERATOR CAST () AS VARIANT
OPERATOR CAST () AS STRING
</code></pre>
<h4 id="remarks-1">Remarks</h4>
<p>These operators aren't called directly, They perform the conversion when the target is not a CDEC variable.</p>
<h1 id="operator-*"><a name="Operator3"></a>Operator *</h1>
<p>Returns the address of the underlying <strong>DECIMAL</strong> structure.</p>
<pre><code>OPERATOR * (BYREF dec AS CDEC) AS DECIMAL PTR
</code></pre>
<h1 id="comparison-operators"><a name="Operator4"></a>Comparison operators</h1>
<pre><code>OPERATOR = (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS BOOLEAN
OPERATOR &lt;&gt; (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS BOOLEAN
OPERATOR &lt; (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS BOOLEAN
OPERATOR &gt; (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS BOOLEAN
OPERATOR &lt;= (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS BOOLEAN
OPERATOR &gt;= (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS BOOLEAN
</code></pre>
<h1 id="math-operators"><a name="Operator5"></a>Math operators</h1>
<pre><code>OPERATOR + (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS CDEC
OPERATOR += (BYREF dec AS CDEC)
OPERATOR - (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS CDEC
OPERATOR -= (BYREF dec AS CDEC)
OPERATOR * (BYREF dec1 AS CDEC, BYREF dec2 AS CDEC) AS CDEC
OPERATOR *= (BYREF dec AS CDEC)
OPERATOR / (BYREF dec AS CDEC, BYVAL cOperand AS CDEC) AS CDEC
OPERATOR /= (BYREF cOperand AS CDEC)
</code></pre>
<h4 id="examples-1">Examples</h4>
<pre><code>DIM dec AS CDEC = 12345.1234
dec = dec + 111.11
dec = dec - 111.11
dec = dec * 2
dec = dec / 2
dec += 123
dec -= 123
dec *= 2.3
dec /= 2.3
</code></pre>
<h4 id="remarks-2">Remarks</h4>
<p>The version OPERATOR - (BYREF dec AS CDEC) AS CDEC changes the sign of a decimal number.</p>
<pre><code>DIM dec AS CDEC = 123
dec = -dec
</code></pre>
<p>Other FreeBasic operators such AND, MOD, OR, SHL and SHR can also be used with CDEC variables, e.g. c = c AND 1, c = c MOD 5, etc.</p>
<h1 id="decabs"><a name="DecAbs"></a>DecAbs</h1>
<p>Returns the absolute value of a decimal data type.</p>
<pre><code>FUNCTION DecAbs () AS CDEC
</code></pre>
<h1 id="decfix"><a name="DecFix"></a>DecFix</h1>
<p>Returns integer portion of a decimal data type. If the value is negative, then the first negative integer greater than or equal to the value is returned.</p>
<pre><code>FUNCTION DecFix () AS CDEC
</code></pre>
<h1 id="decint"><a name="DecInt"></a>DecInt</h1>
<p>Returns integer portion of a decimal data type. If the value is negative, then the first negative integer less than or equal to the value is returned.</p>
<pre><code>FUNCTION DecInt () AS CDEC
</code></pre>
<h1 id="decround"><a name="DecRound"></a>DecRound</h1>
<p>Rounds the DECIMAL to a specified number of decimal places.</p>
<pre><code>FUNCTION DecRound () AS CDEC
</code></pre>
<h1 id="issigned"><a name="IsSigned"></a>IsSigned</h1>
<p>Returns true if this number is signed or false otherwise.</p>
<pre><code>FUNCTION IsSigned () AS BOOLEAN
</code></pre>
<h1 id="isunsigned"><a name="IsUnsigned"></a>IsUnsigned</h1>
<p>Returns true if this number is unsigned or false otherwise.</p>
<pre><code>FUNCTION IsUnsigned () AS BOOLEAN
</code></pre>
<h1 id="scale"><a name="Scale"></a>Scale</h1>
<p>Returns the scale of the DECIMAL number.</p>
<pre><code>FUNCTION Scale () AS UBYTE
</code></pre>
<h1 id="sign"><a name="Sign"></a>Sign</h1>
<p>Returns 0 if it is not signed of &amp;h80 (128) if it is signed.</p>
<pre><code>FUNCTION Sign () AS UBYTE
</code></pre>
<h1 id="tovar"><a name="ToVar"></a>ToVar</h1>
<p>Returns the DECIMAL as a VT_DECIMAL variant.</p>
<pre><code>FUNCTION ToVar () AS VARIANT
</code></pre>
<h4 id="remarks-3">Remarks</h4>
<p>Can be used to assign a currency directly to a CVAR variable.</p>
<pre><code>DIM dec AS CDEC = 12345.1234
DIM cv AS CVAR = dec.ToVar
</code></pre>
</body>
</html>

